You are not logged in Log in Join
You are here: Home » Members » 4AM Productions (Evan Simpson) » DTMLWiki » Inserting Objects and Expressions

Log in
Name

Password

 
 

History for Inserting Objects and Expressions

??changed:
-
To render and insert a Zope object you use the caret (^) 
followed by the object name and optional arguments. It would look like so:

<pre>    ^myObj</pre>

This would be the direct equivilant of &lt;dtml-var myObj&gt;. The insertion
statement is terminated either by a line break, or a ";" if you wanted to
insert HTML or other objects on the same line.

To pass some arguments, it would look like this:

<pre>    ^myObj(arg=value, arg2=value)</pre>

If you wished to render an object indirectly (specify the name of the object
in a string) you would type:

<pre>
    ^_![objName]
or  
    ^_.getitem(objName)
</pre>

The _ namespace object could be made implicit also leading to the possibility of calls like:

<pre>   ^DateTime("1/1/2001")</pre>

To render the result of an expression, put the expression in parens as in:

<pre>   ^(foo + bar)</pre>

To call a method and not render the results (ala &lt;dtml-call&gt;) use
a bang "!" in place of the caret "^":

<pre>    !sql_wipe_db(key="*")</pre>

In order for this to work reliably, calls statements must occupy the
entire line. This should improve readability anyhow.

To do formatting I propose simply using the Python formatting operator (%):

<pre>    ^(amount % "$%.2f")</pre>

Other special formatting could be handled by string functions or even
methods of a resulting string like:

<pre>    ^str(name).capitalize()</pre>

or perhaps

<pre>    ^string.capitalize(name)</pre>

To handle missing/null values, a function could also be used.

<pre>
    ^missing(optionalVar, "None")
    ^null(paymentDate, "No Payment Yet")
</pre>